#ifndef __GRILLE_CC__
#define __GRILLE_CC__

#include "grille.hh"

template<class T>
Grille<T>::Grille (int w, int h, T v) : width(w), height(h) {
	for (int i = 0; i < w * h; i++)
		this->grille[i] = v;
}

template<class T>
T& Grille<T>::valeur (int x, int y) {
	return this->grille[y * + this->width + x];
}

template<class T>
const T& Grille<T>::valeur (int x, int y) const {
	return this->grille[y * + this->width + x];
}

template<class T>
bool Grille<T>::valide (int x, int y) const {
	return (x >= 0 && y >= 0
		&& x < this->width && y < this->height);
}

template<class T>
T& Grille<T>::valeur (const Point &p) {
	return this->grille[p.y * + this->width + p.x];
}

template<class T>
const T& Grille<T>::valeur (const Point &p) const {
	return this->grille[p.y * + this->width + p.x];
}

template<class T>
bool Grille<T>::valide (const Point &p) const {
	return (p.x >= 0 && p.y >= 0
		&& p.x < this->width && p.y < this->height);
}


#endif
